﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using Website.Logger;
using DAL;
using BOL;

using WebLib;
using System.Web.Script.Services;
using System.Web.Services;
using AjaxControlToolkit;
using UtilityExtensions;

namespace UILGestion.Admin
{
    public partial class InsumoInsertForm : System.Web.UI.Page
    {


        [WebMethod(), ScriptMethod()]
        public static string GetRecursos(String prefixText, String contextKey)
        {

                InsumoBL insumo=new InsumoBL();
                return insumo.getInsumoDescripAll(prefixText, 30);
            

        }



             

        protected void Page_Load(object sender, EventArgs e)
        {

            if (!Page.IsPostBack)
            {
                try
                {
                    internalid.Value = (string)Request.QueryString["id"];
                    type.Value = (string)Request.QueryString["type"];
                    
                    grupo.Value = (string)Request.QueryString["grupo"];
                    menuCtrl1.loadMenuAdmin();
                    FormatForm();
                }
                catch (SqlException sqlex)
                {
                    WebServerSideSqlError.Log(sqlex);

                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);
                 

                }
                catch (Exception ex)
                {
                    WebServerSideError.Log(ex);
                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                         "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);
                 
                }

            }
        }
        protected void btnSaveContinue_Click(object sender, EventArgs e)
        {

            try
            {

                if ((sender as Button).Text == "Guardar")
                {
                InsumoBL obraBL = new InsumoBL();
                DataSet ds = new DataSet();


                int? intPadre =null;

           if (idPadre.Value!="")
               intPadre = int.Parse(idPadre.Value);

           if (type.Value == "A")
           {
               if (claseDropDownList.SelectedValue == "-1")
               {
                   internalid.Value = obraBL.addClase(
                           descripcionTextBox.Text,
                           codigoTextBox.Text,
                           cuentaTextBox.Text,
                           verificacionCheckBox.Checked
                           ).ToString();
                   Response.Redirect("InsumoReadForm.aspx?id=" + internalid.Value , false);
               
               }
               if (FamiliaDropDownList.SelectedValue == "-1")
               {
                   internalid.Value = obraBL.addFamilia(
                           descripcionTextBox.Text,
                           codigoTextBox.Text,
                          int.Parse(claseDropDownList.SelectedValue),
                           cuentaTextBox.Text,
                           verificacionCheckBox.Checked
                           ).ToString();
                   Response.Redirect("InsumoReadForm.aspx?id=" + internalid.Value, false);
               
               }
               if (subFamiliaDropDownList.SelectedValue == "-1"  )
               {
                   internalid.Value = obraBL.addsubFamilia(
                           descripcionTextBox.Text,
                           codigoTextBox.Text,
                          int.Parse(FamiliaDropDownList.SelectedValue),
                           cuentaTextBox.Text,
                           verificacionCheckBox.Checked
                           ).ToString();
                   Response.Redirect("InsumoReadForm.aspx?id=" + internalid.Value , false);
               
               }
               
               if  (nivel.Value== "3")
               {

                   
                   internalid.Value = obraBL.addInsumo(
                           descripcionTextBox.Text,
                           codigoTextBox.Text,
                           verificacionCheckBox.Checked,
                           int.Parse(subFamiliaDropDownList.SelectedValue),
                           int.Parse(unidadDropDownList.SelectedValue),
                           controlStockCheckBox.Checked
                          
                           ).ToString();

                   Response.Redirect("InsumoReadForm.aspx?id=" + internalid.Value , false);
               
               }
              
            
               
               
            
           }
           if (type.Value == "E")
           {

               if (nivel.Value == "0")
               {
                   obraBL.updateClase(
                            int.Parse(internalid.Value),
                            descripcionTextBox.Text,
                            codigoTextBox.Text,
                            cuentaTextBox.Text,
                            verificacionCheckBox.Checked
                            ).ToString();
               }
               if (nivel.Value == "1")
               {
                   obraBL.updateFamilia(
                            int.Parse(internalid.Value),
                           descripcionTextBox.Text,
                           codigoTextBox.Text,                           
                           cuentaTextBox.Text,
                           verificacionCheckBox.Checked,
                           int.Parse(claseDropDownList.SelectedValue)
                           ).ToString();
               }
               if (nivel.Value == "2")
               {
                    obraBL.updateSubFamilia(
                            int.Parse(internalid.Value),
                           descripcionTextBox.Text,
                           codigoTextBox.Text,
                           cuentaTextBox.Text,
                           verificacionCheckBox.Checked,
                           int.Parse(FamiliaDropDownList.SelectedValue)
                           ).ToString();
               }

               if (nivel.Value == "3")
               {

                    obraBL.updateinsumo(
                           int.Parse(internalid.Value),
                           descripcionTextBox.Text,
                           codigoTextBox.Text,
                           controlStockCheckBox.Checked,
                           int.Parse(unidadDropDownList.SelectedValue),
                           verificacionCheckBox.Checked,
                           int.Parse(subFamiliaDropDownList.SelectedValue)
                           ).ToString();
               }
               

            
                Response.Redirect("InsumoReadForm.aspx?id=" + internalid.Value , false);

           }


                }
                if ((sender as Button).Text == "Cancelar")
            
                {
                    Response.Redirect("InsumoListForm.aspx",true);
                }
                

            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);
                 
            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);
                 
            }




        }
        private void LoadInsumo()
        {
            InsumoBL insumo = new InsumoBL();
            InsumoInfo info=insumo.Load(int.Parse(internalid.Value));


            codigoTextBox.Text = info.codigo;
            descripcionTextBox.Text = info.descripcion;
            idPadre.Value = info.idPadre.ToString();
            unidadDropDownList.SelectedValue = info.idunidad.ToString();
            controlStockCheckBox.Checked = info.bitControlStock;
            nivel.Value = info.nivel.ToString();
            cuentaTextBox.Text = info.cuenta;

            if (info.nivel == 0)
            {
                tituloLabel.Text = String.Format("EDITAR CLASE:{0}", "");
                claseDropDownList.SelectedValue = "0";
                
                
                claseDropDownList.Visible = false;
                claseLabel.Visible = false;
                
                FamiliaDropDownList.Visible = false;
                familiaLabel.Visible = false;
                subFamiliaDropDownList.Visible = false;
                subFamiliaLabel.Visible = false;
                
                unidadLabel.Visible = false;
                unidadDropDownList.Visible = false;

                controlStockLabel.Visible = false;
                controlStockCheckBox.Visible = false;
            }
            if (info.nivel == 1)
            {
                tituloLabel.Text = String.Format("Editar familia:{0}", "");
                claseDropDownList.DataSource = GetInsumoClase();
                claseDropDownList.DataBind();
                claseDropDownList.SelectedValue = info.idPadre.ToString();
                claseDropDownList.Enabled = false;
                FamiliaDropDownList.Visible = false;
                familiaLabel.Visible = false;
                subFamiliaDropDownList.Visible = false;
                subFamiliaLabel.Visible = false;

                unidadLabel.Visible = false;
                unidadDropDownList.Visible = false;

                controlStockLabel.Visible = false;
                controlStockCheckBox.Visible = false;
            }
            if (info.nivel == 2)
            {
                tituloLabel.Text = String.Format("Editar Sub Familia:{0}", "");
                DAL.Insumo insumoclase = DbUtil.Db.Insumos.Single(p => p.idInternal == info.idPadre);
                
                claseDropDownList.DataSource =GetInsumoClase();
                claseDropDownList.DataBind();
                claseDropDownList.SelectedValue = insumoclase.idPadre.ToString();
                claseDropDownList.Enabled = false;


                FamiliaDropDownList.DataSource = GetInsumoFamilia(insumoclase.idPadre.Value);
                FamiliaDropDownList.DataBind();
                FamiliaDropDownList.SelectedValue = info.idPadre.ToString();
                FamiliaDropDownList.Enabled = false;

                subFamiliaDropDownList.Visible = false;
                unidadLabel.Visible = false;
                controlStockLabel.Visible = false;

                
                
                subFamiliaDropDownList.Visible = false;
                subFamiliaLabel.Visible = false;

                unidadLabel.Visible = false;
                unidadDropDownList.Visible = false;

                controlStockLabel.Visible = false;
                controlStockCheckBox.Visible = false;
            }

            if (info.nivel == 3)
            {
                DAL.Insumo subfamilia = DbUtil.Db.Insumos.Single(p => p.idInternal == info.idPadre);
                DAL.Insumo familia = DbUtil.Db.Insumos.Single(p => p.idInternal == subfamilia.idPadre);

                

                claseDropDownList.DataSource = GetInsumoClase();
                claseDropDownList.DataBind();
                claseDropDownList.SelectedValue = familia.idPadre.ToString();
                claseDropDownList.Enabled = false;


                FamiliaDropDownList.DataSource = GetInsumoFamilia(familia.idPadre.Value);
                FamiliaDropDownList.DataBind();
                FamiliaDropDownList.SelectedValue = familia.idInternal.ToString();
                FamiliaDropDownList.Enabled = false;


                subFamiliaDropDownList.DataSource = GetInsumoSubFamilia(familia.idInternal);
                subFamiliaDropDownList.DataBind();
                subFamiliaDropDownList.SelectedValue = info.idPadre.ToString();
                subFamiliaDropDownList.Enabled = false;

                tituloLabel.Text = String.Format("Editar Insumo:{0}", "");
                cuentaTextBox.Visible = false;
                planCuenta.Visible = false;
                
                //solo pas personas pueden controlar esta opcion
                //
                controlStockCheckBox.Enabled = false;
                //
                int idempleado = (int)Session["idEmpleado"];
                
                //if (info.idPadre == 5571)
                //if (idempleado == 32 | idempleado == 50 | idempleado == 41 | idempleado == 1 | info.idPadre == 5571 | idempleado == 76)
                //{
                    // solo en este caso debe editar el grupo 
                    claseDropDownList.Enabled = true;
                    FamiliaDropDownList.Enabled = true;
                    subFamiliaDropDownList.Enabled = true;
                    controlStockCheckBox.Enabled = true;
                //}

            }
           



        }

         private void FormatForm()
        {



           ShowAllComboBox();


           if (type.Value == "E")
           {
               // no cambiar si existe familia o insumo ya cheados

               //--------------------
               int idEmpleadoEmisor = int.Parse(System.Web.HttpContext.Current.Session["idEmpleado"].ToString());
               bool acceso = new DAL.FormularioAcceso().VerificarAcceso(DbUtil.Db,
                   idEmpleadoEmisor,
                   10, //Insumo
                   3); //crear
               //------------------------- 
               // los paneles presentes en el formulario
               pnlMain.Visible = true;
               Panelcab.Visible = true;
               PanelButtom.Visible = true;
               

               LoadInsumo();
           }

           if (type.Value == "A")
           {


               //--------------------
               int idEmpleadoEmisor = int.Parse(System.Web.HttpContext.Current.Session["idEmpleado"].ToString());
               bool acceso = new DAL.FormularioAcceso().VerificarAcceso(DbUtil.Db,
                   idEmpleadoEmisor,
                   10, //Insumo
                   2); //crear
               //------------------------- 
               // los paneles presentes en el formulario
               pnlMain.Visible = true;
               Panelcab.Visible = true;
               PanelButtom.Visible = true;
               
               tituloLabel.Text = String.Format("INGRESAR INSUMO:{0}","" );
               codigoTextBox.Text = "";

                //1	CASCO
                //2	ACABADO
                //3	OFICINA
                //4	ELECTRIFICACION
                //5	INFRAESTRUCTURA
                //6	ESTRUCTURA


               //if (TipoObra==1)
               //bitacabadoCheckBox.Checked = true;
               //bitacabadoCheckBox.Enabled = false;
               
               //bitCascoCheckBox.Checked = true;
               //bitCascoCheckBox.Enabled = false;
               
               //bitOficinaCheckBox.Checked = true;
               //bitOficinaCheckBox.Enabled = false;
               ////visualizacion segun grupo
               //switch (grupo.Value)
               //{
               //    case "C":
               //        claseDropDownList.SelectedValue = "-1";
               //        claseDropDownList.Enabled = false;
               //        subFamiliaLabel.Visible = false;
               //        subFamiliaDropDownList.Visible = false;
               //        familiaLabel.Visible = false;
               //        FamiliaDropDownList.Visible = false;
               //        unidadLabel.Visible = false;
               //        unidadDropDownList.Visible = false;
               //        break;
               //    case "F":
               //        FamiliaDropDownList.SelectedValue = "-1";
               //        claseDropDownList.SelectedValue = "-1";
               //        claseDropDownList.Enabled = true;
               //        subFamiliaLabel.Visible = false;
               //        subFamiliaDropDownList.Visible = false;
               //        unidadLabel.Visible = false;
               //        unidadDropDownList.Visible = false;
               //        break;
               //    case "S":
               //        subFamiliaDropDownList.SelectedValue = "-1";
               //        unidadLabel.Visible = false;
               //        unidadDropDownList.Visible = false;
               //        break;
               //    default:
               //        break;
               //}
              
           }
            
            
        }


         private void ShowAllComboBox()
         {

             claseDropDownList.DataSource = this.GetInsumoClase();
             claseDropDownList.DataTextField = "descripcion";
             claseDropDownList.DataValueField = "idInternal";
             claseDropDownList.DataBind();



             FamiliaDropDownList.Items.Clear();
             subFamiliaDropDownList.Items.Clear();

             FamiliaDropDownList.DataTextField = "descripcion";
             FamiliaDropDownList.DataValueField = "idInternal";

             subFamiliaDropDownList.DataTextField = "coddescripcion";
             subFamiliaDropDownList.DataValueField = "idInternal";
             
             unidadDropDownList.DataTextField = "descripcion";
             unidadDropDownList.DataValueField = "idInternal";



             ListValueInfo unidadcero = new ListValueInfo();
             unidadcero.idInternal = 0;
             unidadcero.descripcion= "----Sin Unidad-----";
             List<ListValueInfo> unidadList = new List<ListValueInfo>();
             unidadList.Add(unidadcero);

             var q = new ListValueBL().GetInsumoUnidad();
                        
             unidadList.AddRange(q.ToList());
                 
             unidadDropDownList.DataSource = unidadList;
             unidadDropDownList.DataBind();


         }
         private List<ListValueInfo> GetInsumoClase()
         {


             List<ListValueInfo> insumoList = new List<ListValueInfo>();
             ListValueInfo insumoSeleccion = new ListValueInfo();
             insumoSeleccion.idInternal = 0;
             insumoSeleccion.descripcion = "---Selecciones una clase----";

             ListValueInfo insumo = new ListValueInfo();
             insumo.idInternal=-1;
             insumo.descripcion = "------Nueva Clase-------";

             insumoList.Add(insumoSeleccion);
             if (type.Value=="A")
                    insumoList.Add(insumo);
             ListValueBL bol = new ListValueBL();


             insumoList.AddRange(bol.GetInsumoClases());

             return insumoList;
                   
         }

         private List<ListValueInfo> GetInsumoFamilia(int clase)
         {


             List<ListValueInfo> insumoList = new List<ListValueInfo>();
             ListValueInfo insumoSeleccion = new ListValueInfo();
             insumoSeleccion.idInternal = 0;
             insumoSeleccion.descripcion = "---Selecciones Familia----";

             ListValueInfo insumo = new ListValueInfo();
             insumo.idInternal = -1;
             insumo.descripcion = "------Nueva Familia-------";

             insumoList.Add(insumoSeleccion);
             if (type.Value == "A")
             insumoList.Add(insumo);

             ListValueBL bol = new ListValueBL();
             insumoList.AddRange(bol.GetInsumoFamiliaXClase(clase));

             return insumoList;

                  

         }
         private List<view_Insumo> GetInsumoSubFamilia(int subFamilia)
         {
             dbGestionDataContext _db = new dbGestionDataContext(Parametros.strConnString);
             var q = from w in _db.view_Insumo
                     where (w.nivel == 2) && (w.idPadre == subFamilia)
                     select w;

             List<view_Insumo> insumoList = new List<view_Insumo>();
             view_Insumo insumoSeleccion = new view_Insumo();
             insumoSeleccion.idInternal = 0;
             insumoSeleccion.codDescripcion = "---Selecciones SubFamilia----";

             view_Insumo insumo = new view_Insumo();
             insumo.idInternal = -1;
             insumo.codDescripcion = "------Nueva SubFamilia-------";

             insumoList.Add(insumoSeleccion);
             if (type.Value == "A")
             insumoList.Add(insumo);
             if (q.Count() > 0)
                 insumoList.AddRange(q.ToList());

             return insumoList;



         }

         private void visibleNuevafamilia()
         {
            
             

         }

         protected void claseDDL_SelectedIndexChanged(object sender, EventArgs e)
         {
             try
             {
                 int clase = int.Parse(claseDropDownList.SelectedItem.Value);

                 if (clase > 0)
                 {
                     FamiliaDropDownList.Visible = true;
                    familiaLabel.Visible = true;

                    subFamiliaDropDownList.Visible = false;
                    subFamiliaLabel.Visible = false;
                    unidadDropDownList.Visible = false;
                    unidadLabel.Visible = false;

                    planCuenta.Visible = true;
                    cuentaTextBox.Visible = true;

                    controlStockLabel.Visible = false;
                    controlStockCheckBox.Visible = false;

                    revisadoLabel.Visible = true;
                    verificacionCheckBox.Visible = true;
                  

                     idPadre.Value = clase.ToString();
                     if (type.Value=="A")
                        nivel.Value = "1";
                     panelCodigo.Update();

                     FamiliaDropDownList.Items.Clear();
                     FamiliaDropDownList.SelectedIndex = -1;
                     FamiliaDropDownList.DataSource = GetInsumoFamilia(clase);
                     FamiliaDropDownList.DataBind();
                     FamiliaDropDownList.SelectedValue = "0";
                     panelFamilia.Update();
                     subFamiliaUpdatePanel.Update();
                     controlStockUpdatePanel.Update();
                     revisadoUpdatePanel.Update();
                     planCuentaUpdatePanel.Update();
                    
                 }
                 if (clase==-1)  // nueva clase
                 {
                     FamiliaDropDownList.Visible = false;
                   
                     familiaLabel.Visible = false;

                     subFamiliaDropDownList.Visible = false;
                   
                     subFamiliaLabel.Visible = false;


                     unidadDropDownList.Visible = false;
                     unidadLabel.Visible = false;

                     planCuenta.Visible = true;
                     cuentaTextBox.Visible = true;

                     controlStockLabel.Visible = false;
                     controlStockCheckBox.Visible = false;

                     revisadoLabel.Visible = true;
                     verificacionCheckBox.Visible = true;


                     codigoTextBox.Text = new DAL.Insumo().getCorrelativo(DbUtil.Db, "", 0);
                     
                     idPadre.Value = "";
                     nivel.Value = "0";
                     panelCodigo.Update();
                     panelFamilia.Update();
                     subFamiliaUpdatePanel.Update();
                     unidadUpdatePanel.Update();
                     planCuentaUpdatePanel.Update();
                     controlStockUpdatePanel.Update();
                     revisadoUpdatePanel.Update();
                    

                   
                 }
                 if (clase == 0)
                   {

                       FamiliaDropDownList.Visible = false;

                       familiaLabel.Visible = false;

                       subFamiliaDropDownList.Visible = false;

                       subFamiliaLabel.Visible = false;


                       unidadDropDownList.Visible = false;
                       unidadLabel.Visible = false;

                       planCuenta.Visible = true;
                       cuentaTextBox.Visible = true;

                       controlStockLabel.Visible = false;
                       controlStockCheckBox.Visible = false;

                       revisadoLabel.Visible = true;
                       verificacionCheckBox.Visible = true;
                     

                      
                       codigoTextBox.Text = "";
                      
                      
                       panelFamilia.Update();
                       //SubFamiliaDropDownList.Enabled = false;
                       //SubFamiliaDropDownList.Items.Clear();
                       subFamiliaUpdatePanel.Update();
                       unidadUpdatePanel.Update();
                       planCuentaUpdatePanel.Update();
                       controlStockUpdatePanel.Update();
                       revisadoUpdatePanel.Update();
                 
                     }

             

             }
             catch (SqlException sqlex)
             {
                 WebServerSideSqlError.Log(sqlex);
                 ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);
                 


             }
             catch (Exception ex)
             {
                 WebServerSideError.Log(ex);
                 ScriptManager.RegisterClientScriptBlock(this, typeof(Page), 
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);
                 

                 

                 
             }
             


         }
         protected void familiaDDL_SelectedIndexChanged(object sender, EventArgs e)
         {
             try
             {
                 if (FamiliaDropDownList.Items.Count>0)

                 {
                        var familia = int.Parse(FamiliaDropDownList.SelectedItem.Value);
                 
                 
                     if (familia > 0)
                     {
                         subFamiliaDropDownList.Visible = true;
                         subFamiliaLabel.Visible = true;

                         DAL.Insumo insumoFamilia = DbUtil.Db.Insumos.Single(p => p.idInternal == familia);
                         codigoTextBox.Text = "";// insumoFamilia.getCorrelativo(DbUtil.Db, insumoFamilia.codigo, idTipoInsumo, 1);
                         
                         idPadre.Value = familia.ToString();
                         if (type.Value == "A")
                             nivel.Value = "2";
                         subFamiliaDropDownList.Items.Clear();
                         subFamiliaDropDownList.SelectedIndex = -1;
                         subFamiliaDropDownList.DataSource = GetInsumoSubFamilia(familia);
                         subFamiliaDropDownList.DataBind();
                         subFamiliaDropDownList.SelectedValue = "0";
                         
                         subFamiliaUpdatePanel.Update();
                         unidadUpdatePanel.Update();
                         planCuentaUpdatePanel.Update();
                         controlStockUpdatePanel.Update();
                         revisadoUpdatePanel.Update();
                         
                     
                         panelCodigo.Update();
                     }

                     if (familia == 0)
                     {
                         codigoTextBox.Text = "";
                         
                         subFamiliaDropDownList.Visible = false;
                         subFamiliaLabel.Visible = false;
                         //SubFamiliaDropDownList.Items.Clear();
                         //SubFamiliaDropDownList.Enabled = false;
                        // panelSubFamilia.Update();
                        // codigoTextBox.Text="";
                         //panelCodigo.Update();
                     

                     }
                     if (familia == -1)
                     {
                         // nuevo

                         subFamiliaDropDownList.Visible = false;
                         subFamiliaDropDownList.Items.Clear();
                         subFamiliaLabel.Visible = false;


                         unidadDropDownList.Visible = false;
                         unidadLabel.Visible = false;

                         planCuenta.Visible = true;
                         cuentaTextBox.Visible = true;

                         controlStockLabel.Visible = false;
                         controlStockCheckBox.Visible = false;

                         revisadoLabel.Visible = true;
                         verificacionCheckBox.Visible = true;

                         
                         
                         int clase = int.Parse(claseDropDownList.SelectedItem.Value);


                         DAL.Insumo insumoFamilia = DbUtil.Db.Insumos.Single(p => p.idInternal == clase);
                             codigoTextBox.Text = insumoFamilia.getCorrelativo(DbUtil.Db,
                                 insumoFamilia.codigo,1);
                       
                         idPadre.Value = clase.ToString();
                         nivel.Value = "1";

                        
                         subFamiliaUpdatePanel.Update();
                         unidadUpdatePanel.Update();
                         planCuentaUpdatePanel.Update();
                         controlStockUpdatePanel.Update();
                         revisadoUpdatePanel.Update();
                         
                         panelCodigo.Update();

                     }

                 }
             
             }
             catch (SqlException sqlex)
             {
                 WebServerSideSqlError.Log(sqlex);
                 ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                    "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);
                 
             }
             catch (Exception ex)
             {
                 WebServerSideError.Log(ex);
                 ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                   "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);
                 
             }
             



         }

         protected void refreshButton_Click(object sender, EventArgs e)
         {
             FormatForm();
         }

         protected void subFamiliaDDL_SelectedIndexChanged(object sender, EventArgs e)
         {

             try
             {
                 if (subFamiliaDropDownList.Items.Count > 0)
                 {

                     var subfamilia = int.Parse(subFamiliaDropDownList.SelectedItem.Value);


                     if (subfamilia > 0)
                     {
                        

                         unidadDropDownList.Visible = true;
                         unidadLabel.Visible = true;

                         planCuenta.Visible = false;
                         cuentaTextBox.Visible = false;

                         controlStockLabel.Visible = true;
                         controlStockCheckBox.Visible = true;

                         revisadoLabel.Visible = false;
                         verificacionCheckBox.Visible = false;



                         DAL.Insumo insumoPadre = DbUtil.Db.Insumos.Single(p => p.idInternal == subfamilia);

                         idPadre.Value = insumoPadre.idInternal.ToString();
                         if (type.Value == "A")
                            nivel.Value = "3";
                         codigoTextBox.Text = insumoPadre.getCorrelativo(DbUtil.Db, insumoPadre.codigo,
                              3);
                         panelCodigo.Update();
                         unidadUpdatePanel.Update();
                         planCuentaUpdatePanel.Update();
                         controlStockUpdatePanel.Update();
                         revisadoUpdatePanel.Update();
             
                     }
                     if (subfamilia == 0)
                     {
                         codigoTextBox.Text = "";
                         panelCodigo.Update();
                        
                     }
                     if (subfamilia == -1)
                     {


                         // nuevo



                         unidadDropDownList.Visible = false;
                         unidadLabel.Visible = false;

                         planCuenta.Visible = true;
                         cuentaTextBox.Visible = true;

                         controlStockLabel.Visible = false;
                         controlStockCheckBox.Visible = false;

                         revisadoLabel.Visible = true;
                         verificacionCheckBox.Visible = true;



                         int familia = int.Parse(FamiliaDropDownList.SelectedItem.Value);

                         DAL.Insumo insumoFamilia = DbUtil.Db.Insumos.Single(p => p.idInternal == familia);
                             codigoTextBox.Text = insumoFamilia.getCorrelativo(DbUtil.Db,
                                 insumoFamilia.codigo, 2);
                         
                         idPadre.Value = familia.ToString();
                         nivel.Value = "2";

                         panelCodigo.Update();
                         unidadUpdatePanel.Update();
                         planCuentaUpdatePanel.Update();
                         controlStockUpdatePanel.Update();
                         revisadoUpdatePanel.Update();

                     }


                 }


             }
             catch (SqlException sqlex)
             {
                 WebServerSideSqlError.Log(sqlex);
                 ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                      "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


             }
             catch (Exception ex)
             {
                 WebServerSideError.Log(ex);
                 ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                      "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

             }
         }


    }
}
